<?php

/**

* Controlador Sala

*  @filesource

 * @author			Diogo Corazolla

 * @copyright		Copyright 2009 M2R

 * @package			broffices

 * @subpackage		broffices.application.controllers

 * @version			1.0

*/



class SalaController extends Zend_Controller_Action

{

	

	private $intTamPag;

	

	/**

	 * Este metodo sera executado sempre que a classe for instanciada,

	 * depois do construtor.

	 * Faz o carregamento das classes que serao usadas pelo controlador.

	 * @return void

	 */

	public function init()

	{

		Zend_Loader::loadClass('Sala');

		Zend_Loader::loadClass('TipoSalaSala');

		

		// inicializando variaveis com valor padrao

		$this->intTamPag = 30;

	}



	/**

	 * Metodo que mostra a pagina inicial

	 * @return void

	 */

	public function indexAction()

	{

		// exibe tela

		$this->montaTela("sala/bodyindex.tpl", 

							array(), 

							false);

	}

	

	/**

	 * Metodo que mostra o grid

	 * @return void

	 */

	public function tabelaAction()

	{

		$pag = 1;

		$post = Zend_Registry::get('post');

		if (isset($post->pag)) $pag = $post->pag;

		if (isset($post->tamPag)) $this->intTamPag = $post->tamPag;

		$busca = $post->busca;

		

		$inicio = ($pag>1) ? ($pag-1)*$this->intTamPag : 0;

		$fim = $inicio + $this->intTamPag;

		

		$arrBusca = array();

		$arrBusca["s.bln_ativo="] = 1;

		$arrBusca["u.bln_ativo="] = 1;

		if (!empty($busca)) $arrBusca["vhr_nome like "] = "%".$busca."%"; 

		

		// Pegando clientes do banco de dados

		$tblSala = new Sala();

		$total = $tblSala->pegaTotal($arrBusca);

		if ($fim>$total) $fim = $total;

		$totalPag = (int)(($total % $this->intTamPag == 0)?($total/$this->intTamPag):(($total/$this->intTamPag)+1));

		

		$RsSala = $tblSala->busca($arrBusca, 

											array("vhr_nome"), 

											$this->intTamPag, 

											$inicio);

											

		$this->montaTela("sala/bodytabela.tpl", 

							array("pag"=>$pag, 

									"total"=>$total, 

									"inicio"=>($inicio+1), 

									"fim"=>$fim,

									"totalPag"=>$totalPag,

									"salas"=>$RsSala,

									"busca"=>$busca,

									"urlEditar"=>"sala/editar",

									"urlApagar"=>"sala/apagar"), 

							false);

	}

	

	/**

	 * Metodo que mostra o formulario de novo

	 * @return void

	 */

	public function novoAction()

	{

		$this->montaTela("sala/bodyform.tpl", 

							array("acao"=>"sala/incluir",

									"totalDisposicoes"=>"0"), 

							false);

	}

	

	/**

	 * monta form de edicao

	 * @param int $cod - codigo do objeto a ser editado

	 * @return void

	 */

	public function editarAction()

	{

		$post = Zend_Registry::get('post');

		$cod = $post->codigo;

		

		$tblSala = new Sala();

		$row = $tblSala->find($cod)->current();

		
/*
		$tblTipoSalaSala = new TipoSalaSala();

		$rsDisposicoes = $tblTipoSalaSala->busca(array("sala_id="=>$row->id));

		$totalDisposicoes = count($rsDisposicoes);
*/
		

		$this->montaTela("sala/bodyform.tpl", 

							array("acao"=>"sala/alterar",

									"sala"=>$row,

									/*"totalDisposicoes"=>$totalDisposicoes,

									"disposicoes"=>$rsDisposicoes*/), 

							false);

	}

	

	

	/**

	 * monta form de exclusao

	 * @param int $cod - codigo do objeto a ser apagado

	 * @return void

	 */

	public function apagarAction()

	{

		$post = Zend_Registry::get('post');

		$cod = $post->codigo;

		

		$tblSala = new Sala();

		$row = $tblSala->find($cod)->current();

		$this->montaTela("sala/bodyapagar.tpl", 

							array("acao"=>"sala/excluir",

									"sala"=>$row), 

							false);

	}

	

	/**

	 * Metodo que grava clientes no banco de dados

	 * @return void

	 */

	public function incluirAction()
	{
		// pegando dados POST salvos
		$post = Zend_Registry::get('post');
		$nome = $post->nome;
		$unidade = $post->unidade;
		$tiposala = $post->tiposala;
		$capacidade = $post->capacidade;

		/*$numero_disposicoes = $post->num_disposicoes;

		

		$disposicoes = array();

		for ($i=1; $i<=$numero_disposicoes; $i++)

		{

			$disposicoes[$i]["tiposala_id"] = $post->__get("tipo_".$i);

			$disposicoes[$i]["capacidade"] = $post->__get("capacidade_".$i);

		}

		*/

		// objeto modelo tabela Cliente

		$tblSala = new Sala();

		$rsSala = $tblSala->busca(array("s.vhr_nome="=>$nome, 
										"s.unidade_id="=>$unidade, 
										"s.bln_ativo="=>1));



		$mensagem = "";

		$script = "";

		

		if (count($rsSala)>0)

		{

			$mensagem = "Sala j&aacute; cadastrada";			

		} 

		else 

		{

			$dados = array("vhr_nome"=>$nome,
							"unidade_id"=>$unidade,
							"tiposala_id"=>$tiposala,
							"int_capacidade"=>$capacidade,
							"bln_ativo"=>1);

			$cod_sala = $tblSala->insert($dados);
			
			/*$tblTipoSalaSala = new TipoSalaSala();

			for ($i=1; $i<=$numero_disposicoes; $i++)

			{

				// inserindo registro na tabela associativa

				$dados = array("sala_id"=>$cod_sala, 

								"tiposala_id"=>$disposicoes[$i]["tiposala_id"], 

								"int_capacidade"=>$disposicoes[$i]["capacidade"]);

				if (!empty($dados["int_capacidade"]))

				{

					$tblTipoSalaSala->insert($dados);

				}

				

			}*/

			

			$mensagem = "Sala cadastrada com sucesso";

			$_site = Zend_Registry::get("site");

			$script = "\$('#div_form').html('');\n

			jqAjaxLink('".$_site["url"]."sala/tabela', '', 'div_tabela');";			

		}

		

		$this->montaTela("sala/bodymensagem.tpl", 

							array("mensagem"=>$mensagem, 

									"script"=>$script), 

							false);

	}

	

	/**

	 * grava alteracoes no banco

	 * @return void

	 */

	public function alterarAction()

	{

		$post = Zend_Registry::get('post');

		$codigo = $post->cod;
/*
		$numero_disposicoes = $post->num_disposicoes;

		

		$disposicoes = array();

		for ($i=1; $i<=$numero_disposicoes; $i++)

		{

			$disposicoes[$i]["tiposala_id"] = $post->__get("tipo_".$i);

			$disposicoes[$i]["capacidade"] = $post->__get("capacidade_".$i);

		}

*/		

		$mensagem = "";

		$script = "";

		

		$tblSala = new Sala();

		$row = $tblSala->find($codigo)->current();

		$row->vhr_nome = $post->nome;

		$row->unidade_id = $post->unidade;

		$row->tiposala_id = $post->tiposala;

		$row->int_capacidade = $post->capacidade;

		$row->save();

/*		

		$tblTipoSalaSala = new TipoSalaSala();

		$tblTipoSalaSala->apagaSala($codigo);

		for ($i=1; $i<=$numero_disposicoes; $i++)

		{

			// inserindo registro na tabela associativa

			$dados = array("sala_id"=>$codigo, 

							"tiposala_id"=>$disposicoes[$i]["tiposala_id"], 

							"int_capacidade"=>$disposicoes[$i]["capacidade"]);

			if (!empty($dados["int_capacidade"]))

			{

				$tblTipoSalaSala->insert($dados);

			}

			

		}

*/		

		$mensagem = "Sala alterada com sucesso";

		$_site = Zend_Registry::get("site");

		$script = "\$('#div_form').html('');\n

		jqAjaxLink('".$_site["url"]."sala/tabela', '', 'div_tabela');";	

		

		$this->montaTela("sala/bodymensagem.tpl", 

							array("mensagem"=>$mensagem, 

									"script"=>$script), 

							false);

	}

	

	/**

	 * Metodo que apaga uma cliente do banco

	 * @return void

	 */

	public function excluirAction()

	{

		$post = Zend_Registry::get('post');

		$codigo = $post->cod;

		

		$mensagem = "";

		$script = "";

		

		$tblSala = new Sala();

		$tblSala->apaga($codigo);

		

		$mensagem = "Sala apagada com sucesso";

		$_site = Zend_Registry::get("site");

		$script = "\$('#div_form').html('');\n

		jqAjaxLink('".$_site["url"]."sala/tabela', '', 'div_tabela');";	

		

		$this->montaTela("sala/bodymensagem.tpl", 

							array("mensagem"=>$mensagem, 

									"script"=>$script), 

							false);

	}

	

	public function selectSalaAction()
	{
		$get = Zend_Registry::get('get');

		$cod = $get->cod;
		$codunidade = $get->codunidade;
		$tiposala = $get->tipo_sala;

		$arrBusca = array();
		$arrBusca['s.bln_ativo=']=1;
		if($codunidade){$arrBusca['s.unidade_id=']=$codunidade;}
		if($tiposala){$arrBusca['s.tiposala_id=']=$tiposala;}

		$tblSala = new Sala();
		$rsSala = $tblSala->busca($arrBusca,array("vhr_nome"));

		$this->montaTela("sala/selectsala.tpl", 
							array("salas"=>$rsSala,
									"cod"=>$cod),
							false);

	}

	

/**

	 * Monta a tela de retorno ao usuario

	 * @param string $corpo - arquivo tpl do corpo

	 * @param array $dados - array com os dados a serem inseridos na tela, no seguinte formato "nome"=>"valor"

	 * @param boolean $exibeHeader - true ou false para exibir header, menu e rodape 

	 * @return void

	 */

	public function montaTela($corpo, $dados=array(), $exibeHeader=true)

	{

		// iniciando view

		$view = Zend_Registry::get('view');

		// setando corpo

		$view->assign('_corpo',$corpo);



		// pegando variaveis globais do site

		$_site = Zend_Registry::get("site");

		// setando variaveis globais ao template

		$view->assign('_site', $_site);

		

		// percorrendo array de dados e inserindo no template

		foreach ($dados as $dado=>$valor)

		{

			$view->assign($dado, $valor);

		}

		

		// define o template master

		$tplLayout = $_site["layout"];

		// se exibirHeader for verdadeiro

		if ($exibeHeader)

		{

			// adiciona cabecalho

			$view->assign('_cabecalho', $_site["header"]);

			// adiciona menu

			$view->assign('_menu', $_site["menu"]);

			// adiciona rodape

			$view->assign('_rodape', $_site["footer"]);

		}

		// se exibirHeader for falso

		else

		{

			// define template master sem cabecalho

			$tplLayout = $_site["layout_sem_header"];

		}

		// retorna o tempalte master, com corpo e variaveis setadas

		$view->output($tplLayout);

	}

	

}
